package com.wicket.okrfinance.biz.service.dto.req;

import com.wicket.okrfinance.common.dto.BaseDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.validation.constraints.NotNull;
import lombok.Data;
import com.wicket.okrfinance.biz.service.dto.common.TargetBudgetSetDto;

/**
 * @desc ImplementReceiveFieldInputReqDto
 * @使用场景
 */
@Data
public class ImplementReceiveFieldInputReqDto
  extends BaseDto
  implements Serializable {

  /**
   * 账户ID
   */
  @NotNull(message = "账户ID不能为空")
  @ApiModelProperty("账户ID")
  private String accountId;
@ApiModelProperty("财务资金来源列表 ")
List<String> accountCapitalSourceList = new ArrayList<>();
/**
     * 使用场景类型编码 PMO:项目管理 DOUBLE_HIGH_PLAN:双高规划 GENERAL_PLAN:常规规划
     */
    @ApiModelProperty("使用场景类型编码")
    private String	 useSceneTypeCode;

    /**
     * 主体生命周期 CURRENTLY_VALID:当前有效 EDITING:正在编辑 ARCHIVING:历史存档
     */
    @ApiModelProperty("主体生命周期")
    private String	 subjectLifeCycle;

    /**
     * 是否存档 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否存档")
    private String	 isArchive;
/**
     * 是否允许操作 TRUE:是 FALSE:否
     */
    @NotNull(message = "是否允许操作不能为空")
@ApiModelProperty("是否允许操作")
    private String	 isAllowOpt;
/**
     * 是否组织正式财务标准 TRUE:是 FALSE:否
     */
    @NotNull(message = "是否组织正式财务标准不能为空")
@ApiModelProperty("是否组织正式财务标准")
    private String	 isOrgOfficialAccountNom;
/**
     * 自定义字段1
     */
    @NotNull(message = "自定义字段1不能为空")
@ApiModelProperty("自定义字段1")
    private String	 customField1;

    /**
     * 自定义字段2
     */
    @NotNull(message = "自定义字段2不能为空")
@ApiModelProperty("自定义字段2")
    private String	 customField2;
/**
     * 数据类型编码 FROM_LAST_BUDGET:预算较上次变化 FROM_LAST_RATIO_BUDGET:预算较上次增降幅 FUNDS_USE_PROGRESS:资金使用进度 BUDGET_USABLE:预算可用金额 BUDGET_FROZEN:预算冻结金额 CUMULATIVE_BUDGET:累计结算金额 BUDGET_TOTAL:预算账户累计总金额 FUNDS_RECEIVED_USABLE:实体账户可用金额 FUNDS_RECEIVED_FROZEN:实体账户冻结金额 FUNDS_RECEIVED_TOTAL:实体账户累计到账总金额 ACTUAL_VALUE:实际值 COUNT_ACTUAL_VALUE:计算实际值 CHANGE_FROM_LAST_TARGET:较上次目标变化值 COUNT_CHANGE_FROM_LAST_TARGET:计算较上次目标变化值 FROM_LAST_TARGET_LIFT_RATIO:较上次目标增降幅 COUNT_FROM_LAST_TARGET_LIFT_RATIO:计算较上次目标增降幅 PROGRESS_VALUE:进度值 COUNT_PROGRESS_VALUE:计算进度值 FROM_LAST_PROGRESS_VALUE:进度较上次变化值 COUNT_FROM_LAST_PROGRESS_VALUE:计算进度较上次变化值 PROGRESS_FROM_LAST_RATIO:进度较上次增降幅 COUNT_PROGRESS_FROM_LAST_RATIO:计算进度较上次增降幅 REACH:达成度 COUNT_REACH:计算达成度 FROM_LAST_REACH:达成度较上次变化值 COUNT_FROM_LAST_REACH:计算达成度较上次变化值 ACTUAL_FROM_LAST_TIME_RATIO:达成度较上次增降福 COUNT_FROM_LAST_REACH_RATIO:计算达成度较上次增降福 FUNDS_RECEIVED:到账金额 FUNDS_RECEIVED_FROM_LAST:到账较上次变化值 CUMULATIVE_FUNDS_RECEIVED:累计使用金额 FUNDS_AUTO_RECEIVED:资金自动到账金额 FUNDS_EXPEND:资金支出金额 FUNDS_EXPEND_FROM_LAST:资金支出较上次变化值 CUMULATIVE_FUNDS_EXPEND:累计支出资金 BUDGET_AMOUNT:预算账户余额 FUNDS_RECEIVED_BALANCE:实体账户余额 SUBJECTIVE_MARK:主观评分 SUBJECTIVE_SCORE:主观得分 OBJECTIVE_SCORE:客观得分 PROCESS_SCORE:过程得分 FROM_LAST_REPORT_SCORE:汇报得分较上次变化值 RESULT_SCORE:结果得分 FROM_LAST_RATIO_REPORT_SCORE:汇报得分较上次增降幅 REAL_TIME_SCORE:实时得分 FROM_LAST_ACTUAL_SCORE:实际得分较上次变化值 GIVE_LIKES:点赞数 FROM_LAST_RATIO_ACTUAL_SCORE:实际得分较上次增降幅 DELAY_SURPLUS_LENGTH:延后或剩余天数 SUB_REPORT_AVG_SCORE:子周期汇报平均分 LAST_REPORT_AVG_SCORE:末级周期汇报平均分 RECENTLY_REPORT_AVG_SCORE:最近周期汇报平均分 PROCESS_REPORT_MID_SCORE:过程汇报中期得分 SUB_PROCESS_REPORT_SCORE:子周期过程汇报得分 MID_PROCESS_REPORT_SCORE:中期过程汇报得分 FATHER_PROCESS_REPORT_SCORE:父周期过程汇报得分 CURRENT_SUBJECTIVE_SCORE:当前主观得分 PROCESS_SUBJECTIVE_SCORE:过程主观得分 LOCAL_LEVEL_SCORE:本级得分 LOWER_LEVEL_SCORE:下级得分 ACTUAL_SCORE:实际得分 ROLE_SUBJECTIVE_SCORE:角色主观得分 SUB_ACTUAL_SCORE:子周期实际得分 MID_ACTUAL_SCORE:中期实际得分 FATHER_ACTUAL_SCORE:父周期实际得分 LOW_KR_ACTUAL_SCORE:下级KR实际得分 SUBJECTIVE_AND_OBJECTIVE_SCORE:主客观得分 BUDGET:预算金额 FUNDS_RECEIVED_FROM_LAST_RATIO:到账较上次增降幅 BUDGET_DISBURSE:预算支出金额 FATHER_CYCLE_REPORT_SCORE:父周期汇报得分 MID_CYCLE_REPORT_SCORE:中期汇报得分 LOWER_PROCESS_CYCLE_REPORT_SCORE:下级过程周期汇报得分 SUB_CYCLE_REPORT_SCORE:子周期汇报得分 LOWER_WORK_CYCLE_REPORT_SCORE:下级工作周期实际得分 LAST_CYCLE_REPORT_SCORE:末级周期汇报得分 NOT_LAST_PROCESS_CYCLE_REPORT_SCORE:中间周期汇报得分 SOURCE_BUDGET_FUNDS_PROP:预算资金来源占比 TARGET_CYCLE_BUDGET_FUNDS_PROP:预算周期占比 ADD_BUDGET:加预算 SUB_BUDGET:减预算 REPORT_SCORE:汇报得分 PROCESS_REPORT_SCORE:过程汇报得分 REPORT_AVG_SCORE:汇报平均分
     */
    @NotNull(message = "数据类型编码不能为空")
@ApiModelProperty("数据类型编码")
    private String	 dataType;
@ApiModelProperty("目标预算设置列表")
private List<TargetBudgetSetDto> targetBudgetSetList = new ArrayList<>();

@ApiModelProperty("子周期列表 ")
List<String> subCycleList = new ArrayList<>();

@ApiModelProperty("中期下子周期列表 ")
List<String> midTermSubCycleList = new ArrayList<>();

    /**
     * 关联目标内容ID
     */
    @NotNull(message = "关联目标内容ID不能为空")
@ApiModelProperty("关联目标内容ID")
    private String	 targetCycleContentId;

    /**
     * 关联目标内容类型编码 TARGET:目标 TARGET_CATEGORY:目标分类 OBJECTIVE:指标
     */
    @NotNull(message = "关联目标内容类型编码不能为空")
@ApiModelProperty("关联目标内容类型编码")
    private String	 targetCycleContentTypeCode;

    /**
     * 被评对象目标周期标识
     */
    @NotNull(message = "被评对象目标周期标识不能为空")
@ApiModelProperty("被评对象目标周期标识")
    private String	 evaObjTargetCycleCode;

    /**
     * 父周期被评对象目标周期ID
     */
    @NotNull(message = "父周期被评对象目标周期ID不能为空")
@ApiModelProperty("父周期被评对象目标周期ID")
    private String	 fatherEvaObjTargetCycleId;

    /**
     * 中期被评对象目标周期ID
     */
    @ApiModelProperty("中期被评对象目标周期ID")
    private String	 midEvaObjTargetCycleId;

    /**
     * 评价模板ID
     */
    @NotNull(message = "评价模板ID不能为空")
@ApiModelProperty("评价模板ID")
    private String	 evaluationTemplateId;

    /**
     * 周期模式类型编码 FATHER_SON_CYCLE:父子周期 SINGLE_CYCLE:单周期 IRREGULAR_CYCLE:不规则周期
     */
    @NotNull(message = "周期模式类型编码不能为空")
@ApiModelProperty("周期模式类型编码")
    private String	 periodicModeTypeCode;

    /**
     * 加减操作类型 ADD:加 SUB:减
     */
    @NotNull(message = "加减操作类型不能为空")
@ApiModelProperty("加减操作类型")
    private String	 addOrSubOptType;

    /**
     * 对方logo
     */
    @NotNull(message = "对方logo不能为空")
@ApiModelProperty("对方logo")
    private String	 oppositeLogo;

    /**
     * 对方名称
     */
    @NotNull(message = "对方名称不能为空")
@ApiModelProperty("对方名称")
    private String	 oppositeName;

    /**
     * 流水业务故事信息
     */
    @NotNull(message = "流水业务故事信息不能为空")
@ApiModelProperty("流水业务故事信息")
    private String	 billBizStory;
/**
     * 预算周期模型编码 PARENT_CYCLE:父周期 SUB_CYCLE:子周期 METAPHASE:中期 CAPITAL_SOURCE:资金来源周期
     */
    @NotNull(message = "预算周期模型编码不能为空")
@ApiModelProperty("预算周期模型编码")
    private String	 budgetCycleModeTypeCode;

    /**
     * 资金来源ID 
     */
    @ApiModelProperty("资金来源ID")
    private String	 capitalSourceId;

    /**
     * 数据对象批次标识 
     */
    @NotNull(message = "数据对象批次标识不能为空")
@ApiModelProperty("数据对象批次标识")
    private String	 dataObjectBatchCode;
/**
     * 周期预算金额 
     */
    @NotNull(message = "周期预算金额不能为空")
@ApiModelProperty("周期预算金额")
    private Double	 cycleBudgetAmount;
/**
     * 自定义字段3 
     */
    @NotNull(message = "自定义字段3不能为空")
@ApiModelProperty("自定义字段3")
    private String	 customField3;
/**
     * 被评对象目标周期ID 
     */
    @NotNull(message = "被评对象目标周期ID不能为空")
@ApiModelProperty("被评对象目标周期ID")
    private String	 evaObjTargetCycleId;
/**
     * 冗余预算单位 
     */
    @NotNull(message = "冗余预算单位不能为空")
@ApiModelProperty("冗余预算单位")
    private String	 cycleBudgetUnit;
/**
     * 预算是否已设置 TRUE:是 FALSE:否
     */
    @NotNull(message = "预算是否已设置不能为空")
@ApiModelProperty("预算是否已设置")
    private String	 isBudgetSeted;
/**
     * 自定义字段 
     */
    @NotNull(message = "自定义字段不能为空")
@ApiModelProperty("自定义字段")
    private String	 customField;
/**
     * 上级被评对象目标周期标识 
     */
    @ApiModelProperty("上级被评对象目标周期标识")
    private String	 parentEvaObjTargetCycleId;
/**
     * 关联归属主体标识 
     */
    @NotNull(message = "关联归属主体标识不能为空")
@ApiModelProperty("关联归属主体标识")
    private String	 accountContentCode;

    /**
     * 主题内容ID 
     */
    @NotNull(message = "主题内容ID不能为空")
@ApiModelProperty("主题内容ID")
    private String	 themeContentId;
/**
     * 总金额 
     */
    @NotNull(message = "总金额不能为空")
@ApiModelProperty("总金额")
    private Double	 totalBudgetAmount;

    /**
     * 账户余额 
     */
    @NotNull(message = "账户余额不能为空")
@ApiModelProperty("账户余额")
    private Double	 accountActualBalance;

    /**
     * 可用金额 
     */
    @NotNull(message = "可用金额不能为空")
@ApiModelProperty("可用金额")
    private Double	 settlableBalance;

    /**
     * 冻结金额 
     */
    @NotNull(message = "冻结金额不能为空")
@ApiModelProperty("冻结金额")
    private Double	 unSettlableBalance;

    /**
     * 累计结算金额 
     */
    @NotNull(message = "累计结算金额不能为空")
@ApiModelProperty("累计结算金额")
    private Double	 accruedSettledAmount;
/**
     * 是否开启资金到账 TRUE:是 FALSE:否
     */
    @NotNull(message = "是否开启资金到账不能为空")
@ApiModelProperty("是否开启资金到账")
    private String	 isOpenFundsArrival;

    /**
     * 周期ID 
     */
    @NotNull(message = "周期ID不能为空")
@ApiModelProperty("周期ID")
    private String	 cycleId;

    /**
     * 冗余单位 TIMES:次 DOOR:门 PART:部 SET:套 INDIVIDUAL:个 YUAN:元 NNT:人 PIECE:篇 TERM:项 FEN:分 WAN_YUAN:万元 PERCENT:1111百分率 PORTION:份 %:%
     */
    @NotNull(message = "冗余单位不能为空")
@ApiModelProperty("冗余单位")
    private String	 unit;

    /**
     * 计算开始时间 
     */
    @NotNull(message = "计算开始时间不能为空")
@ApiModelProperty("计算开始时间")
    private Date	 calcStartTime;

    /**
     * 操作人就职记录ID 
     */
    @NotNull(message = "操作人就职记录ID不能为空")
@ApiModelProperty("操作人就职记录ID")
    private String	 operationInductionId;

    /**
     * 创建于空间ID 
     */
    @NotNull(message = "创建于空间ID不能为空")
@ApiModelProperty("创建于空间ID")
    private String	 spaceId;
/**
     * 周期阶段资料发布时间 
     */
    @NotNull(message = "周期阶段资料发布时间不能为空")
@ApiModelProperty("周期阶段资料发布时间")
    private Date	 updateBatch;

    /**
     * 账单金额 
     */
    @NotNull(message = "账单金额不能为空")
@ApiModelProperty("账单金额")
    private Double	 billAmount;

    /**
     * 是否到账账户 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否到账账户")
    private String	 isIncomingAccount;

    /**
     * 自定义字段4 
     */
    @NotNull(message = "自定义字段4不能为空")
@ApiModelProperty("自定义字段4")
    private String	 customField4;

    /**
     * 关联扣减预算账户归属主体标识 
     */
    @ApiModelProperty("关联扣减预算账户归属主体标识")
    private String	 relSubBudgetAccountCode;
/**
     * 关联归属主体ID 
     */
    @NotNull(message = "关联归属主体ID不能为空")
@ApiModelProperty("关联归属主体ID")
    private String	 accountObjectId;
/**
     * 更新周期ID 
     */
    @NotNull(message = "更新周期ID不能为空")
@ApiModelProperty("更新周期ID")
    private String	 updateCycleId;

    /**
     * 更新周期开始时间 
     */
    @NotNull(message = "更新周期开始时间不能为空")
@ApiModelProperty("更新周期开始时间")
    private Date	 updateCycleStartTime;

    /**
     * 更新周期结束时间 
     */
    @NotNull(message = "更新周期结束时间不能为空")
@ApiModelProperty("更新周期结束时间")
    private Date	 updateCycleEndTime;

    /**
     * 更新周期类型标识 
     */
    @NotNull(message = "更新周期类型标识不能为空")
@ApiModelProperty("更新周期类型标识")
    private String	 updateCycleTypeCode;
/**
     * 预算账户ID 
     */
    @ApiModelProperty("预算账户ID")
    private String	 budgetAccountId;

    /**
     * 实体账户ID 
     */
    @ApiModelProperty("实体账户ID")
    private String	 physicalAccountId;

    /**
     * 内容是否有财务账户 TRUE:是 FALSE:否
     */
    @NotNull(message = "内容是否有财务账户不能为空")
@ApiModelProperty("内容是否有财务账户")
    private String	 isHaveFinanceAccount;
/**
     * 资金使用率 
     */
    @ApiModelProperty("资金使用率")
    private Double	 fundUsageRate;
/**
     * 扣减预算账户ID
     */
    @NotNull(message = "扣减预算账户ID不能为空")
@ApiModelProperty("扣减预算账户ID")
    private String	 relSubBudgetAccountId;
/**
     * 小数点规则 
     */
    @NotNull(message = "小数点规则不能为空")
@ApiModelProperty("小数点规则")
    private Long	 decimalPointRules;

    /**
     * 小数最后一位规则 MALING:尾数抹零 ROUNDED:尾数四舍五入
     */
    @NotNull(message = "小数最后一位规则不能为空")
@ApiModelProperty("小数最后一位规则")
    private String	 decimalDigitsLastRules;
/**
     * 排队最小值 
     */
    @ApiModelProperty("排队最小值")
    private Integer	 queueMinimum;
/**
     * 排队最大值 
     */
    @NotNull(message = "排队最大值不能为空")
@ApiModelProperty("排队最大值")
    private Integer	 queueMaximum;
/**
     * 上一更新周期ID 
     */
    @ApiModelProperty("上一更新周期ID")
    private String	 preUpdateCycleId;

    /**
     * 事务内数据更新批次标识 
     */
    @NotNull(message = "事务内数据更新批次标识不能为空")
@ApiModelProperty("事务内数据更新批次标识")
    private String	 eventBatchUpdateCode;

}
